package cn.iocoder.yudao.module.wecom.dal.mysql.msgrecord;

import java.util.*;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.wecom.dal.dataobject.msgrecord.WeMsgRecordDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.wecom.controller.admin.msgrecord.vo.*;

/**
 * 会话消息 Mapper
 *
 * @author 数创万维
 */
@Mapper
public interface WeMsgRecordMapper extends BaseMapperX<WeMsgRecordDO> {

    default PageResult<WeMsgRecordDO> selectPage(WeMsgRecordPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<WeMsgRecordDO>()
                .eqIfPresent(WeMsgRecordDO::getMsgtype, reqVO.getMsgtype())
                .eqIfPresent(WeMsgRecordDO::getMsgid, reqVO.getMsgid())
                .eqIfPresent(WeMsgRecordDO::getSenderType, reqVO.getSenderType())
                .eqIfPresent(WeMsgRecordDO::getReceiverType, reqVO.getReceiverType())
                .betweenIfPresent(WeMsgRecordDO::getSendTime, reqVO.getSendTime())
                .eqIfPresent(WeMsgRecordDO::getSecureKey, reqVO.getSecureKey())
                .eqIfPresent(WeMsgRecordDO::getContent, reqVO.getContent())
                .eqIfPresent(WeMsgRecordDO::getAttachment, reqVO.getAttachment())
                .eqIfPresent(WeMsgRecordDO::getWeUserId, reqVO.getWeUserId())
                .eqIfPresent(WeMsgRecordDO::getWeCustomerId, reqVO.getWeCustomerId())
                .betweenIfPresent(WeMsgRecordDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(WeMsgRecordDO::getSendTime));
    }

    default PageResult<WeMsgRecordDO> selectPage2(WeMsgRecordListReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<WeMsgRecordDO>()
                .betweenIfPresent(WeMsgRecordDO::getSendTime, reqVO.getSendTime())
                .eqIfPresent(WeMsgRecordDO::getMsgtype, reqVO.getMsgtype())
                .eqIfPresent(WeMsgRecordDO::getWeCustomerId, reqVO.getWeCustomerId())
                .eqIfPresent(WeMsgRecordDO::getWeUserId, reqVO.getWeUserId())
//                .and(a -> {
//                    a.or().eq(WeMsgRecordDO::getSenderId, reqVO.getWeUserId())
//                            .eq(WeMsgRecordDO::getReceiverId, reqVO.getWeCustomerId());
//                    a.or().eq(WeMsgRecordDO::getReceiverId, reqVO.getWeUserId())
//                            .eq(WeMsgRecordDO::getSenderId, reqVO.getWeCustomerId());
//
//                })
                .orderByDesc(WeMsgRecordDO::getSendTime));
    }

//    default PageResult<WeMsgRecordDO> selectPage3(WeMsgRecordListReqVO reqVO) {
//        return selectPage(reqVO, new LambdaQueryWrapperX<WeMsgRecordDO>()
//                .eq(WeMsgRecordDO::getChatid, reqVO.getWeChatId())
//                .eqIfPresent(WeMsgRecordDO::getMsgtype, reqVO.getMsgtype())
//                .orderByDesc(WeMsgRecordDO::getSendTime))
//                ;
//    }

}